
/*****************************************************************************
 *
 * 作   者: 叶友俊 * 创建时间: 2022/11/24 10:29:16 *
 * Copyright (C) 2008 - 鹏业软件公司
 *
 *****************************************************************************/

import {DataPacket, NorDataList} from 'pengesoft-ng-lib';

/**
 * 
 */
export class Contract extends DataPacket {
  Id: string; // 合同id
  CustomerId: string; // 客户id
  Url: string; // 合同文档地址
  StartTime: Date|undefined; // 合同开始时间
  EndTime: Date|undefined; // 合同结束时间
  OriginalPrice: number; // 合同原租金
  Money: number; // 合租金额
  HouseId: string; // 房屋id
  ContractTemplateId: string; // 合同模板id
  Remark: string; // 备注
  VipId: string; // 会员id
  Deposit: number; // 合同押金
  State: number; // 合同状态是否生效（1-是 2-否）
  IsViolation: number; // 是否违约（2否， 1是）
  PayPeriod: number; // 1 月付，4 季付，12年付
  CreateTime: Date|undefined; // 签订时间
  UpdateTime: Date|undefined; // 修改时间
  DeadTime: Date|undefined; // 缴费截止时间

  constructor(options: Partial<Contract> = {}) {
    super();
    this.Id = options.Id || '';
    this.CustomerId = options.CustomerId || '';
    this.Url = options.Url || '';
    this.StartTime = this.newDate(options.StartTime);
    this.EndTime = this.newDate(options.EndTime);
    this.OriginalPrice = !options.OriginalPrice ? 0 : Number.parseFloat(options.OriginalPrice.toString());
    this.Money = !options.Money ? 0 : Number.parseFloat(options.Money.toString());
    this.HouseId = options.HouseId || '';
    this.ContractTemplateId = options.ContractTemplateId || '';
    this.Remark = options.Remark || '';
    this.VipId = options.VipId || '';
    this.Deposit = !options.Deposit ? 0 : Number.parseFloat(options.Deposit.toString());
    this.State = !options.State ? 0 : Number.parseFloat(options.State.toString());
    this.IsViolation = !options.IsViolation ? 0 : Number.parseFloat(options.IsViolation.toString());
    this.PayPeriod = !options.PayPeriod ? 0 : Number.parseFloat(options.PayPeriod.toString());
    this.CreateTime = this.newDate(options.CreateTime);
    this.UpdateTime = this.newDate(options.UpdateTime);
    this.DeadTime = this.newDate(options.DeadTime);
  }
}

/**
 * 列表
 */
export class ContractList extends NorDataList<Contract> {

  constructor(options: Partial<ContractList> | Array<Contract> = {}) {
    super(options, Contract);
  }
}

